<?php
// +----------------------------------------------------------------------
// | 海豚PHP框架 [ DolphinPHP ]
// +----------------------------------------------------------------------
// | 版权所有 2016~2019 广东卓锐软件有限公司 [ http://www.zrthink.com ]
// +----------------------------------------------------------------------
// | 官方网站: http://dolphinphp.com
// +----------------------------------------------------------------------

// 为方便系统核心升级，二次开发中需要用到的公共函数请写在这个文件，不要去修改common.php文件

if (!function_exists('getpagehtml')) {
    /********************
     * 分页以及页码分页信息
     * $count:总行数
     * $limit:每页显示行数
     * $page:当前页码
     * $pplimit:每页显示页码数量
     */
    function getpagehtml($count,$limit='10',$page='1',$pplimit='10'){
        $pageno=(isset($page) && is_numeric($page) && $page>0)?(int)($page):1;
        $limit=(isset($limit) && is_numeric($limit) && $limit>0)?(int)($limit):10;
        $pplimit=(isset($pplimit) && is_numeric($pplimit) && $pplimit>0)?(int)($pplimit):10;
        if(!is_numeric($count) || $count<=0){
            return false;
        }
        $pages=(int)(($count-1)/$limit)+1;						//得到总页数
        $toppage=(($pageno-1)>0)?$pageno-1:1;					//上一页
        $onpage=($pageno>0 && $pageno<$pages)?$pageno+1:$pages;	//得到下一页
        
        $avg=(int)(($pplimit-1)/2);	//算出一半的数量
        $strat="1";
        if($pageno>$avg){				//当前页码不够一半的时候,默认为1
            if(($pages-$pageno)>$avg){	//尾部不够一半的时候,起始值不变;否则为焦点减去一半
                $strat=$pageno-$avg;
            }else{
                if($pages-$pplimit>0){	//总页数小于显示页码数量的时候,起始值也为1
                    $strat=$pages-$pplimit+1;
                }
            }
        }
        
        $fornum=($pages<$pplimit)?$pages:$pplimit;	//循环次数
        $html='';
        if($pageno>1){
            $html.='<li pageid="1"><a href="javascript:void(0)" class="defautcolor">首页</a></li>
                    <li pageid="'.$toppage.'"><a href="javascript:void(0)"  class="defautcolor">上一页</a></li>';
        }else{
            $html.='<li pageid="1"><a href="javascript:void(0)" class="disabdcolor">首页</a></li>';
        }
        
        if($strat>1){
            $html.='<li pageid="0"><xing>***</xing></li>';
        }
        for($i=0;$i<$fornum;$i++){
            $isactive=(($strat+$i)==$pageno)?' class="active"':'';
            $html.='<li pageid="'.($strat+$i).'"'.$isactive.'><a href="javascript:void(0)" class="defautcolor">'.($strat+$i).'</a></li>';
        }
        
        if(($strat+$fornum-1)<$pages){
            $html.='<li pageid="0"><xing>***</xing></li>';
        }
        
        if($pageno<$pages){
            $html.=' <li pageid="'.$onpage.'"><a href="javascript:void(0)" class="defautcolor">下一页</a></li>
			         <li pageid="'.$pages.'"><a href="javascript:void(0)" class="defautcolor">尾页</a></li>';
        }elseif($pageno==$pages){
            $html.='<li pageid="'.$pages.'"><a href="javascript:void(0)" class="disabdcolor">尾页</a></li>';
        }
        
        $result='<div class="pagehtml">
                    <div class="pagehtml_pagetip">共<span class="showrows">'.$count.'</span>条数据，
                                                            当前是第<span class="showpageno">'.$pageno.'</span>/<span class="showpages">'.$pages.'</span>页</div>
                    <div class="pagehtml_pagelimunv"><ul>'.$html.'</ul></div>
                </div>';
        return $result;
    }
}

if (!function_exists('getparam')) {
    /***************************
     * 得到全部参数参数，并返回数组
     */
    function getparam(){
        $body = request()->param();
        if(empty($body)){
            $body= file_get_contents("php://input");
        };
        $body=(isset($body) && is_json($body))?json_decode($body,true):$body;
        $header = request()->header();
        return (is_array($body))?array_merge($body,$header):$header;
    }
    
}

if (!function_exists('is_json')) {
    /***************************
     * json字符创判定
     */
    function is_json($str = ''){
        if (empty($str)){
            return false;
        }
        if (!is_string($str)){
            return false;
        }
        try{
            if (json_decode($str)){
                return true;
            }else{
                return false;
            }
        } catch (\Exception $e){
            return false;
        }
    }
    
}

if (!function_exists('is_serialized')) {
    /***************************
     * 序列化字符串判定
     */
    function is_serialized( $str ) {
        if (empty($str)){
            return false;
        }
        if (!is_string($str)){
            return false;
        }
        try{
            if (serialize(unserialize($str)) == $str){
                return true;
            }else{
                return false;
            }
        } catch (\Exception $e){
            return false;
        }
    }
    
}

if (!function_exists('is_time')) {
    /***************************
     * 检查是否是时间格式
     * $date:时间
     * $fack:时间格式(datetime|date|datemonth|datehouse)
     * $url：发送路径
     */
    function is_time($date,$fack='datetime') {
        $datyarrr=array('datetime'=>'Y-m-d H:i:s','date'=>'Y-m-d','datemonth'=>'Y-m','datehouse'=>'Y-m-d H:i');
        try {
            if(date($datyarrr[$fack],strtotime($date))==$date){
                return true;
            }else{
                return false;
            };
        } catch (\Exception $e){
            return false;
        }
    }
       
}

if (!function_exists('is_money')) {
    /***************************
     * 判断是否金额格式
     * $money:金额
     */
    function is_money($money) {
        if (empty($money)) {
            return FALSE;
        }
        if (!preg_match("/^([1-9]\d{0,9}|0)([.]?|(\.\d{1,2})?)$/", $money)) {
            return FALSE;
        }
        return TRUE;
    }
    
}

if (!function_exists('is_baifenbi')) {
    /***************************
     * 百分比数组格式判定(比值为两位小数的数值)
     * $string:时间数字
     */
    function is_baifenbi($string) {
        if(!empty($string)){
            $strslen=strlen(trim($string));
            if($strslen>1){
                $fuhao=substr(trim($string), ($strslen-1),1);
                $numb=substr(trim($string), 0,-1);
                if($fuhao=='%' && is_money($numb)){
                    return true;
                }
            }
        }
        return false;
    }
    
}

if (!function_exists('is_mobile')) {
    /***************************
     * 判断是否手机号
     * $mobile:手机号
     */
    function is_mobile($mobile) {
        if (empty($mobile)) {
            return FALSE;
        }
        if (!preg_match("/^1[3456789]\d{9}$/", $mobile)) {
            return FALSE;
        }
        return TRUE;
    }
    
}

if (!function_exists('random')) {
    /***************************
     * 创建随机数
     * $length:随机数长度
     * $base:随机数包含哪些数字
     */
    function random($length=12,$base="1234567890abcdefghijklmnopqrstuvwxyz"){
        $len = strlen($base)-1;
        $str = "";
        for($i=0;$i<$length;$i++){
            $str .= $base[rand(0,$len)];
        }
        return $str;
    }
    
}

if (!function_exists('get_ywarray')) {
    /**
     * 二维数组转一维数组如Array ( [0] => [ [id] => 1 [agent_name] => 本地新金牛 ] [1] => [ [id] => 2 [agent_name] => 测试服务器 ] )
     * 转换后为Array('1'=>'本地新金牛','2'=>'测试服务器')
     * $arr:待转换数组
     * $idkey:转换后的索引列
     * $valkey:转换后的索引值列
     */
    function get_ywarray($arr,$idkey,$valkey){
        $result=array();
        if(is_array($arr) && count($arr)>0){
            foreach ($arr as $hang){
                if(isset($hang[$idkey]) && isset($hang[$valkey])){
                    $result[$hang[$idkey]]=$hang[$valkey];
                }
            }
        }
        return $result;
    }
}

if (!function_exists('array_compact')) {
    /***************************
     * 一维数组索引自动填充:
     * $arraykeys 待填充的索引一维数组['name','mobile','sex','age','address']
     * $data 有对应索引值得的一维数组['name'=>'小李','mobile'=>'18888948888']
     * $dvalue 没有索引值的默认值''
     * return ['name'=>'小李','mobile'=>'18888948888','sex'=>'','age'=>'','address'=>'']
     */
    function array_compact($arraykeys,$data=array(),$dvalue=''){
        $result=array();
        foreach ($arraykeys as $hang){
            if(isset($data[$hang])){
                $result[$hang]=$data[$hang];
            }else{
                $result[$hang]=$dvalue;
            }
        }
        return $result;
    }
    
}

if (!function_exists('array_nonull')) {
    /***************************
     * 数组自动去NULL，并转为字符创格式
     * $data:待转的数组
     * $defaultarr:需要设置默认值得数组array('money'=>'0.00','sex'=>'1')
     * $dtcstr:值为空的时候代替字符
     * $type:空数组时的返回结果(1:返回空字符串,2:返回NULL)
     */
    function array_nonull($data,$defaultarr=array(),$dtcstr='',$type='1'){
        $result=array();
        if (is_array($data)){
            if(count($data)>0){
                foreach ($data as $key=>$hang){
                    if(is_array($hang)){
                        $result[$key]=array_nonull($hang,$defaultarr,$dtcstr,$type);
                    }else{
                        if(!empty(trim($hang))){
                            if(isset($defaultarr[$key])){
                                $result[$key]=''.$defaultarr[$key];
                            }else{
                                $result[$key]=''.$hang;
                            }
                        }else{
                            $result[$key]=(trim($hang)=='0')?'0':$dtcstr;
                        }
                    }
                }
            }else{
                ($type=='2')?$result=NULL:'';
            }
        }
        return $result;
    }
    
}

if (!function_exists('set_images')) {
    /***************************
     * 多图数据序列化
     * $imgstr:用逗号链接的多图相对路径（a.jpg,b.jpg）或者数组（[a.jpg,b.jpg]）
     * return:序列化字符串|空
     */
    function set_images($imgstr){
        $result=array();
        $imgarr=(is_array($imgstr))?$imgstr:explode(',', trim($imgstr));
        if(!empty($imgarr) && is_array($imgarr) && count($imgarr)>0){
            for($i=0;$i<count($imgarr);$i++){
                (!empty($imgarr[$i]))?array_push($result,$imgarr[$i]):'';
            }
        }
        return (count($result)>0)?serialize($result):'';
    }
    
}

if (!function_exists('get_images')) {
    /***************************
     * 得到多图反序列数组
     * $seriaimages:序列化的图片字符串或数组;如serialize(a.jpg,b.jpg,c.jpg)|serialize([a.jpg,b.jpg,c.jpg])
     * return:[['imageurl'=>'相对路径','imageurl_show'=>'绝对路径'],['imageurl'=>'相对路径','imageurl_show'=>'绝对路径']];
     */
    function get_images($seriaimages){
        $result=array();
        if(!empty($seriaimages) && is_serialized($seriaimages)){
            $images=unserialize($seriaimages);
            $images=(is_array($images))?$images:explode(',', $images);
            if(is_array($images) && count($images)>0){
                for ($i=0;$i<count($images);$i++){
                    $result[$i]['imageurl']=$images[$i];
                    $result[$i]['imageurl_show']=allurl($images[$i]);
                }
            }
        }
        return $result;
    }
    
}

if (!function_exists('allurl')) {
    /***************************
     * 得到图片全路径
     * $url:图片相对路径
     * $addurl:中间需要补充的途径
     * $ishttps:协议，默认自动获取协议，强制协议为：(-1=>//,0=>http://,1=>https://)
     */
    function allurl($url,$addurl='',$ishttps=''){
        $result='';
        if(!empty($url) && is_string($url)){
            if (stripos(trim($url),'http:')!==false || stripos(trim($url),'https:')!==false  || stripos(trim($url),'//')!==false){     //stripos判定是否有http路由头
                $result = $url;
            }else{
                $http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
                $xyarr=['-1'=>'//','0'=>'http://','1'=>'https://'];
                $header=(in_array($ishttps,['-1','0','1']))?$xyarr[$ishttps]:$http_type;
                $allurl=$header.$_SERVER['HTTP_HOST'].$addurl.$url;
                $result=str_replace('\\','/',$allurl);
            }
        }
        return $result;
    }
    
}

if (!function_exists('get_img_thumb_url')) {
    /**
     * 图片地址替换成压缩URL
     * @param string $content 内容
     * @param string $topddix 替换前缀
     * @param string $suffix 替换后缀
     */
    function get_img_thumb_url($content="",$topddix="",$suffix=""){
        $pregRule = "/<[img|IMG].*?src=[\'|\"](.*?(?:[\.jpg|\.jpeg|\.png|\.gif|\.bmp]))[\'|\"].*?[\/]?>/";
        $content = preg_replace($pregRule, '<img src="'.$topddix.'${1}'.$suffix.'">', $content);
        
        //去除可能出现的重复路由
        $content=str_ireplace($topddix.'http://', 'http://', $content);
        $content=str_ireplace($topddix.'https://', 'https://', $content);
        $content=str_ireplace($topddix.'//', '//', $content);
        
        return $content;
    }
    
}

if (!function_exists('send_message')) {
    /***************************
     * 聚合短信接口发送
     * $mobile:手机号
     * $modelid:短信模板id
     * $appkey:聚合短信APIkey
     */
    function send_message($mobile = '',$modelid='132479',$appkey=''){
        header('content-type:text/html;charset=utf-8');
        $sendUrl = 'http://v.juhe.cn/sms/send'; //短信接口的URL
        if(empty($mobile)){
            return myjson(0,'手机号不存在');
        }
        $code = intval(rand(1000, 9999));
        //判断是否频繁点击
        $verifycodesendtime = \think\cache\Driver::get('verifycodesendtime'.$mobile);
        if (!empty($verifycodesendtime) && $verifycodesendtime + 60 > time()) {
            return myjson(0,'请求频繁请稍后重试');
        }
        //获取配置信息
        $smsConf = array(
            'key'   => $appkey,     //您申请的APPKEY
            'mobile'    => $mobile, //接受短信的用户手机号码
            'tpl_id'    => $typeid, // 短信模板id
            'tpl_value' =>'#code#='.$code //您设置的模板变量，根据实际情况修改
        );
        $result = post_curl(array(),$smsConf,$sendUrl); //请求发送短信
        if($result['error_code']){
            setRegSmsCache($mobile, $code);             //存储短信信息
            return myjson(1,'短信发送成功');
        }else{
            $msg = (isset($result['reason']))?$result['reason']:'请求发送短信失败';
            return myjson(0,$result);
        }
    }
    
}

if (! function_exists('setRegSmsCache')) {
    /**
     * 设置手机短息验证码缓存
     * @param $data_cache
     */
    function setRegSmsCache($mobile, $code){
        cache('sms_' . $mobile,$code);
        $num=time() + 120;
        cache('sms_time' . $mobile,$num);
    }
    
}

if (! function_exists('check_sms_code')) {
    /**
     * 检测手机短信验证码
     * @param $mobile 手机号
     * @param bool|false $code
     * @return bool
     * @author menghui
     */
    function check_sms_code($mobile, $code){
        if(!cache('sms_' . $mobile) || !cache('sms_time'.$mobile)){
            return false;
        }
        if (time() > cache('sms_time' . $mobile)) { // session超时判定
            return false;
        }
        if (cache('sms_'.$mobile) == $code) {
            return true;
        } else {
            return false;
        }
        
    }
}


if (!function_exists('post_curl')) {
    /***************************
     * 发送POST请求
     * $headData:头部请求->格式array("AppKey:".$AppKey,"Nonce:".$Nonce);
     * $bodyData:条件请求->array("accid"=>"edulives001");
     * $url：发送路径
     */
    function post_curl($headData,$bodyData,$url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER,$headData); //传递头部数据
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($bodyData)); //传递post数据
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 检查证书中是否设置域名
        $output = curl_exec($ch);
        curl_close($ch);
        $output=(is_json($output))?json_decode($output,true):$output;
        return $output;
    }
    
}

if (!function_exists('post_jsoncurl')) {
    /***********************
     * 发送json格式的POST请求
     * $url:发送路径
     * $jsonArray:json数组
     */
    function post_jsoncurl($url, $jsonArray){
        try{
            $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_HEADER, false);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json; charset=utf-8']);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($jsonArray));
            $response = curl_exec($ch);
            $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            curl_close($ch);
            if($httpCode=='200'){
                $response=(is_json($response))?json_decode($response,true):$response;
                return array('code'=>200,'data'=>$response);
            }else{
                return array('code'=>$httpCode,'data'=>$response);
            }
        }catch (\Exception $e){
            return array('code'=>'999','data'=>'请求数据异常');
        }
    }
}

if (!function_exists('uplode')) {
    /**
     * input文件上传
     * $typearr:文件类型['jgp','png']
     * $size:文件大小
     * $upurl:上传的路径(根目录+路由前一个文件夹)
     * $geturl:拿文件的路径(域名+后文件路由)
     */
    function uplode($typearr=array(),$size='',$upurl='',$geturl='',$filename='upload'){
        if (isset($_FILES[$filename]) && is_uploaded_file($_FILES[$filename]['tmp_name'])){
            $imgFile = $_FILES[$filename];
            
            $upErr = $imgFile['error'];
            if ($upErr == 0){
                //判断文件大小
                if(is_numeric($size) && $imgFile['size']>$size){
                    return array('code'=>'0','msg'=>'上传文件不能超过'.$size.'KB');
                }
                //判断文件类型    $imgType = $imgFile['type'];
                $arr = explode('.',$imgFile['name']);
                $imgType= $arr[count($arr)-1]; //文件类型。
                if (in_array($imgType,$typearr)){
                    $imgFileName = time().rand(100000, 999999).'.'.$imgType;
                    $imgTmpFile = $imgFile['tmp_name'];
                    move_uploaded_file($imgTmpFile, $upurl.$imgFileName);
                    return array('code'=>'1','url'=>$geturl.$imgFileName);
                }else{
                    $stylestr=implode('|', $typearr);
                    return array('code'=>'0','msg'=>'请选择'.$stylestr.'格式的文件。');
                }
            }else{
                return array('code'=>'0','msg'=>'文件上传失败。');
            }
        }else{
            return array('code'=>'0','msg'=>'上传文件不存在。');
            
        }
    }
}



if (!function_exists('base64Upload')) {
    /**
     * base64图片上传
     * $typearr:文件类型
     * $size:文件大小
     * $upurl:保存文件的路径
     * $geturl:拿文件的路径
     */
    function base64Upload($typearr=array(),$size='',$upurl='',$geturl='',$filename='upload'){
        $param = request()->param();
        $src = $param[$filename];
        if (!empty($src)) {
            //获取图片格式
            if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $src, $result)) {
                $type = $result[2];  //图片格式
                //图片格式验证
                if (!in_array($type,$typearr)){
                    $stylestr=implode('|', $typearr);
                    return array('code'=>'0','msg'=>'请选择'.$stylestr.'格式的文件。');
                }
                $src = str_replace($result[1], '', $src);
                if (!is_dir($upurl)) {
                    mkdirs($upurl);
                }
                //图片名称
                $filename = md5($src) . ".{$type}";
                $new_file = $upurl . $filename;
                //判断图片是否存在
                if (!file_exists($new_file)) {
                    $status = file_put_contents($new_file, base64_decode($src));    //得到图片大小
                    //判断文件大小
                    if(!$status){
                        return array('code'=>'0','msg'=>'上传文件失败');
                    }
                }
                return array('code'=>'1','url'=>$geturl.$filename);
            }else{
                return array('code'=>'0','msg'=>'不是base64的图片上传。');
            }
        }else{
            return array('code'=>'0','msg'=>'上传文件不存在。');
        }
    }
    
}

if (!function_exists('is_idcard')) {
    /***************************
     * 检查身份证号码
     * $id:身份证号
     */
    function is_idcard($id){
        $id = strtoupper($id);
        $regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/";
        $arr_split = array();
        if(!preg_match($regx, $id))
        {
            return FALSE;
        }
        if(15==strlen($id)) //检查15位
        {
            $regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/";
            
            @preg_match($regx, $id, $arr_split);
            //检查生日日期是否正确
            $dtm_birth = "19".$arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4];
            if(!strtotime($dtm_birth))
            {
                return FALSE;
            } else {
                return TRUE;
            }
        }else{
            $regx = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/";
            @preg_match($regx, $id, $arr_split);
            $dtm_birth = $arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4];
            if(!strtotime($dtm_birth)) //检查生日日期是否正确
            {
                return FALSE;
            }
            else
            {
                //检验18位身份证的校验码是否正确。
                //校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。
                $arr_int = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
                $arr_ch = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
                $sign = 0;
                for ( $i = 0; $i < 17; $i++ )
                {
                    $b = (int) $id{$i};
                    $w = $arr_int[$i];
                    $sign += $b * $w;
                }
                $n = $sign % 11;
                $val_num = $arr_ch[$n];
                if ($val_num != substr($id,17, 1))
                {
                    return FALSE;
                } //phpfensi.com
                else
                {
                    return TRUE;
                }
            }
        }
    }
    
}

if (!function_exists('diffBetweenTwoDays')) {
    /***************************
     * 求两个日期之间相差的天数
     * $day1:第一个时间
     * $day2:第二个时间
     * $isstr:是否时间戳格式1是0否
     */
    function diffBetweenTwoDays($day1, $day2, $isstr='0'){
        $second1 = ($isstr=='1')?$day1:strtotime($day1);
        $second2 = ($isstr=='1')?$day2:strtotime($day2);
        
        if ($second1 < $second2) {
            $tmp = $second2;
            $second2 = $second1;
            $second1 = $tmp;
        }
        return (int)(($second1 - $second2) / 86400);
    }
    
}

if (!function_exists('mkdirs')) {
    /***************************
     * 判断文件是否存在，不存在就创建
     * $path:文件路径
     * $mode:权限数值
     */
    function mkdirs($path, $mode = 0777) {
        if (!is_dir($path)) {
            mkdirs(dirname($path));
            mkdir($path, 0777);
            chmod($path, 0777);
        }
        return is_dir($path);
    }
    
}

if (!function_exists('createQrcode')) {
    /***************************
     * 生产二维码
     * $url:二维码链接或者字符串
     * $logoimg:二维码中间的LOGO
     * $codename:为空自动产生新二维码,否则定死二维码名称不刷新二维码
     * return:服务器图片路径
     */
    function createQrcode($url, $logoimg = '', $codename='') {
        if (empty($url)) {
            return '';
        }
        $httppath=PUB_PATH;
        if(!empty($codename)){
            $file=$codename. '.jpg';
            $path = PUB_PATH . 'qrcode';
        }else{
            $file = md5(base64_encode($url . '-' . $logoimg)).'.jpg';
            $path = PUB_PATH . 'qrcode' . DS . date('Ymd');
        }
        if (!is_dir($path)) {   //判断文件权限
            mkdirs($path);
        }
        $qrcode_file = $path . DS . $file;
        
        if (!is_file($path)) {
            require_once PATH . '/extend/phpqrcode/phpqrcode.php';
            QRcode::png($url, $qrcode_file, QR_ECLEVEL_M, 4);
            qrcode_logo($qrcode_file, $logoimg);
        }
        if(!empty($codename)){
            $code_url=allurl(DS.'qrcode'. DS . $file);
        }else{
            $code_url=allurl(DS.'qrcode'. DS . date('Ymd') . DS . $file);
        }
        return  $code_url;
    }
    
}

if (!function_exists('qrcode_logo')) {
    /***************************
     * 二维码图片裁剪
     * $qrcode_file:二维码链接图片链接
     * $logoimg:二维码中间的LOGO
     */
    function qrcode_logo($qrcode_file, $logoimg) {
        if (empty($qrcode_file) || empty($logoimg)) {
            return;
        }
        $QR = imagecreatefromstring(file_get_contents($qrcode_file));
        $logo = imagecreatefromstring(file_get_contents($logoimg));
        if (empty($QR) || empty($logo)) {
            return;
        }
        $QR_width = imagesx($QR); //二维码图片宽度
        $logo_width = imagesx($logo); //logo图片宽度
        $logo_height = imagesy($logo); //logo图片高度
        $logo_qr_width = $QR_width / 5;
        $scale = $logo_width / $logo_qr_width;
        $logo_qr_height = $logo_height / $scale;
        $from_width = ($QR_width - $logo_qr_width) / 2;
        imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
        imagejpeg($QR, $qrcode_file);
    }
    
}

if (!function_exists('myjson')) {
    /***************************
     * 提供给API的接口json返回数据
     * $code:返回状态
     * $msg:返回消息
     * $result:传递数据
     * apitype:接收数据类型：1:默认数据2:APP数据
     */
    function myjson($code = 1,$msg='',$result = []) {
        $paramsnum = func_num_args();   //得到传递过来的参数数量
        if ($paramsnum == 1){
            $msg=($code == 1)?'操作成功':'操作失败';
        }else if ($paramsnum == 2){
            if (is_array($msg)){
                $result = $msg;
                $msg=($code == 1)?'操作成功':'操作失败';
            }
        }else if ($paramsnum == 3){
            if (is_array($msg) && !is_array($result) && !empty($result)){
                $result_message = $result;
                $result = $msg;
                $msg = $result_message;
            }
        }
        
        $ret['code'] = $code;
        $ret['msg'] = $msg;
        $ret['data'] = $result;
        $parm=getparam();   //得到所有参数
        $type=(isset($parm['apitype']) && $parm['apitype']=='2')?'2':'1';
        $ret=array_nonull($ret,array(),'',$type);
        echo json_encode($ret);
        exit();
    }
    
}


if (!function_exists('checkidstr')) {
    /***************************
     * 对逗号链接的值进行去空处理
     * $idstr:带验证的id字符串
     * $s:链接符号，默认是逗号
     */
    function checkidstr($idstr,$s=','){
        $result='';
        if(!empty($idstr)){
            $idarr=explode($s,trim($idstr));
            $idarr=array_unique($idarr);            //去重复，减少循环压力
            sort($idarr);                           //值重新排序
            $newarr=array();
            if(is_array($idarr) && count($idarr)>0){
                for($i=0;$i<count($idarr);$i++){
                    if(!empty($idarr[$i]) && is_numeric($idarr[$i])){
                        $newarr[]=$idarr[$i];
                    }
                }
            }
            if(count($newarr)>0){
                $result=implode($s,$newarr);
            }
        }
        return $result;
    }
    
}

if (!function_exists('readExcel')) {
    /***************************
     * 导入Excel文件
     * $file:exl文件
     * $header:读取的列名
     */
    function readExcel($file, $header = []){
        include_once '../extend/Excel/PHPExcel.php';
        $PHPReader = new \PHPExcel_Reader_Excel2007();        //建立reader对象
        if (!$PHPReader->canRead($file)) {
            $PHPReader = new \PHPExcel_Reader_Excel5();
            if (!$PHPReader->canRead($file)) {
                return false;
            }
        }
        $PHPExcel = $PHPReader->load($file);        //建立excel对象
        $currentSheet = $PHPExcel->getSheet(0);        //**读取excel文件中的指定工作表*/
        $allColumn = \PHPExcel_Cell::columnIndexFromString($currentSheet->getHighestColumn());        //**取得最大的列号*/
        $allRow = $currentSheet->getHighestRow();        //**取得一共有多少行*/
        #读取表头
        $rowIndex = 1;
        $map = array();
        for ($colIndex = 0; $colIndex <= $allColumn; $colIndex++) {
            $addr = \PHPExcel_Cell::stringFromColumnIndex($colIndex) . $rowIndex;
            $cell = $currentSheet->getCell($addr)->getValue();
            if ($cell instanceof PHPExcel_RichText) { //富文本转换字符串
                $cell = $cell->__toString();
            }
            $map[$colIndex] = isset($header[$cell]) ? $header[$cell] : $cell;
        }
        $rowIndex++;
        #读取表数据
        $data = array();
        for ($rowIndex; $rowIndex <= $allRow; $rowIndex++) {        //循环读取每个单元格的内容。注意行从1开始，列从A开始
            $row = array();
            for ($colIndex = 0; $colIndex <= $allColumn; $colIndex++) {
                $addr = \PHPExcel_Cell::stringFromColumnIndex($colIndex) . $rowIndex;
                $cell = $currentSheet->getCell($addr)->getValue();
                if ($cell instanceof PHPExcel_RichText) { //富文本转换字符串
                    $cell = $cell->__toString();
                }
                if ($colIndex == 0 && empty($cell)) continue 2;
                $key = $map[$colIndex];
                $row[$key] = $cell;
            }
            $data[] = $row;
        }
        return $data;
    }
    
}


/*
 * 导出excel表
 * $arrHeader  表头:如array('用户ID','手机号','真实姓名');
 * $fields 表头对应字段:如array('id','user_name','real_name');
 * $xlsData 数据:如[['id'=>'1','user_name'=>'a','real_name'=>'李四'],['id'=>'2','user_name'=>'b','real_name'=>'王五']]
 * $title 表名:如"用户信息列表"
 */
if (!function_exists("exportExcel")) {
    function exportExcel($arrHeader,$fields,$xlsData,$title){
        include_once '../extend/Excel/PHPExcel.php';
        $objExcel = new \PHPExcel();
        //set document Property
        $objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
        $objActSheet = $objExcel->getActiveSheet();
        $key = ord("A");
        $tit="A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,S,Y,Z,";
        $arr=explode(',',substr($tit,0,-1));
        $lenth =  count($arrHeader);
        if($lenth>26){
            return "目前只支持最大26列";
        }
        $tit_tmd=substr($tit,0,2*$lenth-1);
        $letter =explode(',',$tit_tmd);
        //填充表头信息
        for($i = 0;$i < $lenth;$i++) {
            $objActSheet->setCellValue("$letter[$i]1","$arrHeader[$i]");
        };
        //填充表格信息
        foreach($xlsData as $k=>$v){
            $k +=2;
            $num=0;
            foreach ($fields as $key=>$value){
                $objActSheet->setCellValue($arr[$num].$k,$v[$value]);
                $num+=1;
            }
            // 表格高度
            $objActSheet->getRowDimension($k)->setRowHeight(20);
        }
        $num=0;
        $width = array(10,15,20,25,30);//可选宽度
        foreach ($fields as $key=>$value){
            //设置表格的宽度
            $objActSheet->getColumnDimension($arr[$num])->setWidth($width[2]);
            $num+=1;
        }
        $outfile = $title.".xlsx";
        ob_end_clean();
        header("Content-Type: application/force-download");
        header("Content-Type: application/octet-stream");
        header("Content-Type: application/download");
        header('Content-Disposition:inline;filename="'.$outfile.'"');
        header("Content-Transfer-Encoding: binary");
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header("Pragma: no-cache");
        $objWriter->save('php://output');
    }
}


if (!function_exists('distance_sql')) {
    /***************************
     * 得到商品的查询范围SQL语句
     * @param lng:当前用户经度
     * @param lat:当前用户纬度
     * @prarm rang:用户查询范围(单位米)
     * @return 返回查询主键(id),和范围(distance)单位为米的sql语句
     */
    function distance_sql($lng,$lat,$rang='10000000000'){
        $Coordinate = new \app\admin\model\Coordinate('ccia_view','lng','lat');
        $sql = $Coordinate->getsql($lng,$lat,$rang);
        return $sql;
    }
    
}


if (!function_exists('getDistance')) {
    /***************************
     * 计算两点地理坐标之间的距离
     * @param  Decimal $longitude1 起点经度
     * @param  Decimal $latitude1  起点纬度
     * @param  Decimal $longitude2 终点经度
     * @param  Decimal $latitude2  终点纬度
     * @param  Int     $unit       单位 1:米 2:公里
     * @param  Int     $decimal    精度 保留小数位数
     * @return Decimal
     */
    function getDistance($longitude1, $latitude1, $longitude2, $latitude2, $unit=2, $decimal=2){
        $EARTH_RADIUS = 6370.996; // 地球半径系数
        $PI = 3.1415926;
        $radLat1 = $latitude1 * $PI / 180.0;
        $radLat2 = $latitude2 * $PI / 180.0;
        
        $radLng1 = $longitude1 * $PI / 180.0;
        $radLng2 = $longitude2 * $PI /180.0;
        
        $a = $radLat1 - $radLat2;
        $b = $radLng1 - $radLng2;
        
        $distance = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2)));
        $distance = $distance * $EARTH_RADIUS * 1000;
        
        if($unit==2){
            $distance = $distance / 1000;
        }
        
        return round($distance, $decimal);
    }
    
}

if (!function_exists('changenum')) {
    /***************************
     * 数值取整或保留几位小数
     * $num:待取整的数值
     * $type:取整方式1:round(四舍五入),2:ceil(有小数就加1),3:floor(去掉所有小数),
     * $s:保留几位小数(默认0)
     */
    function changenum($num,$type='1',$s='0'){
        $num=($s>0)?$num*pow(10,$s):$num;
        if(in_array($type,array('1','2','3'))){
            if($type=='1'){         //round四舍五入
                $num=round($num);
            }elseif($type=='2'){    //ceil小数进一
                $num=ceil($num);
            }else{
                $num=floor($num);   //floor去掉小数
            }
        }
        $num=($s>0)?$num/pow(10,$s):$num;
        return $num;
    }
    
}

if (!function_exists('getMonth')) {
    /***************************
     * 数值指定时间的月份信息
     * $strtrtime:指定日期的时间戳
     * $type:top:上一月|now:当前月|last:下一月
     * $num:增加或减少的月数，默认为1
     */
    function getMonth($strtrtime='',$type='now',$num=1){
        $strtrtime=(!empty($strtrtime))?$strtrtime:time();
        if(in_array($type,['top','last'])){
            $num=($type=='top')?-($num):$num;
            $strtrtime=strtotime(date('Y',$strtrtime).'-'.(date('m',$strtrtime)+$num));
        }
        $firstday = date("Y-m-01 00:00:00",$strtrtime);
        $days=date('t',$strtrtime);
        $lastday = date("Y-m-$days 23:59:59",$strtrtime);
        
        $starttime=strtotime($firstday);
        $endtime=strtotime($lastday);
        return ['firstday'=>$firstday,'lastday'=>$lastday,'starttime'=>$starttime,'endtime'=>$endtime];
    }
    
}


if (!function_exists('isMobile')) {
    /***************************
     * 判断是否手机设备
     */
    function isMobile() {
        // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
        if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])){
            return true;
        }
        
        //此条摘自TPM智能切换模板引擎，适合TPM开发
        if(isset ($_SERVER['HTTP_CLIENT']) &&'PhoneClient'==$_SERVER['HTTP_CLIENT']){
            return true;
        }
        //如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
        if (isset ($_SERVER['HTTP_VIA'])){
            //找不到为flase,否则为true
            return stristr($_SERVER['HTTP_VIA'], 'wap') ? true : false;
        }
        //判断手机发送的客户端标志,兼容性有待提高
        if (isset ($_SERVER['HTTP_USER_AGENT'])) {
            $clientkeywords = array(
                'nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile'
            );
            //从HTTP_USER_AGENT中查找手机浏览器的关键字
            if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
                return true;
            }
        }
        //协议法，因为有可能不准确，放到最后判断
        if (isset ($_SERVER['HTTP_ACCEPT'])) {
            // 如果只支持wml并且不支持html那一定是移动设备
            // 如果支持wml和html但是wml在html之前则是移动设备
            if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
                return true;
            }
        }
        return false;
    }
    
    
}

if (!function_exists('hidenstr')) {
    /************
     * 影藏字符串
     * $str:待影藏字符
     * $startnum:头部显示的长度
     * $endnum:尾部显示的长度
     * $num:*号数量
     */
    function hidenstr($str,$startnum=3,$endnum=0,$num='3',$s='*'){
        $header=substr($str, 0,$startnum);
        $e='';
        if((strlen($str)-$startnum)>=$endnum){
            $e=substr($str, (strlen($str)-$endnum),$endnum);
        }
        $x='';
        for ($i=0;$i<$num;$i++){
            $x.=$s;
        }
        $newstr=$header.$x.$e;
        return $newstr;
    }
}

if (!function_exists('strto_date')) {
    /************
     * 时间戳转天时分秒
     * $time:时间戳
     */
    function strto_date($time){
        $d=(int)($time/86400);					//天
        $h=(int)(($time%86400)/3600);			//时
        $m=(int)((($time%86400)%3600)/60);		//分
        $s=(int)(($time%86400)%3600%60);		//秒
        return array('d'=>$d,'h'=>$h,'m'=>$m,'s'=>$s);
    }
}

if (! function_exists('get_client_refer')) {
    /**
     * 获取客户来源
     * @return mixed
     */
    function get_client_refer(){
        if (isset($_SERVER['HTTP_REFERER']) && ! empty($_SERVER['HTTP_REFERER'])) {
            return $_SERVER['HTTP_REFERER'];
        }
        if (isset($_SERVER['QUERY_STRING']) && ! empty($_SERVER['QUERY_STRING'])) {
            return $_SERVER['QUERY_STRING'];
        }
        return '直接地址访问';
    }
}

if (!function_exists('get_client_ua')) {
    /**
     * 获取客户端I终端类型新版
     * @return mixed
     */
    function get_client_ua() {
        $agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
        if (stristr($agent, 'iPad')) {
            $fb_fs = "iPad";
        } else if (preg_match('/Android (([0-9_.]{1,3})+)/i', $agent, $version)) {
            $fb_fs = "手机(Android " . $version[1] . ")";
        } else if (stristr($agent, 'Linux')) {
            $fb_fs = "电脑(Linux)";
        } else if (preg_match('/iPhone OS (([0-9_.]{1,3})+)/i', $agent, $version)) {
            $fb_fs = "手机(iPhone " . $version[1] . ")";
        } else if (preg_match('/Mac OS X (([0-9_.]{1,5})+)/i', $agent, $version)) {
            $fb_fs = "电脑(OS X " . $version[1] . ")";
        } else if (preg_match('/unix/i', $agent)) {
            $fb_fs = "Unix";
        } else if (preg_match('/windows/i', $agent)) {
            $fb_fs = "电脑(Windows)";
        } else {
            $fb_fs = "未知设备";
        }
        
        if (stripos($agent, "Firefox/") > 0) {
            preg_match("/Firefox\/([^;)]+)+/i", $agent, $b);
            $exp[0] = "Firefox";
            $exp[1] = $b[1];  //获取火狐浏览器的版本号
        } elseif (stripos($agent, "Maxthon") > 0) {
            preg_match("/Maxthon\/([\d\.]+)/", $agent, $aoyou);
            $exp[0] = "傲游";
            $exp[1] = $aoyou[1];
        } elseif (stripos($agent, "MSIE") > 0) {
            preg_match("/MSIE\s+([^;)]+)+/i", $agent, $ie);
            $exp[0] = "IE";
            $exp[1] = $ie[1];  //获取IE的版本号
        } elseif (stripos($agent, "OPR") > 0) {
            preg_match("/OPR\/([\d\.]+)/", $agent, $opera);
            $exp[0] = "Opera";
            $exp[1] = $opera[1];
        } elseif(stripos($agent, "Edge") > 0) {
            //win10 Edge浏览器 添加了chrome内核标记 在判断Chrome之前匹配
            preg_match("/Edge\/([\d\.]+)/", $agent, $Edge);
            $exp[0] = "Edge";
            $exp[1] = $Edge[1];
        } elseif (stripos($agent, "Chrome") > 0) {
            preg_match("/Chrome\/([\d\.]+)/", $agent, $google);
            $exp[0] = "Chrome";
            $exp[1] = $google[1];  //获取google chrome的版本号
        } elseif(stripos($agent,'rv:')>0 && stripos($agent,'Gecko')>0){
            preg_match("/rv:([\d\.]+)/", $agent, $IE);
            $exp[0] = "IE";
            $exp[1] = $IE[1];
        }else {
            $exp[0] = "未知浏览器";
            $exp[1] = "";
        }
        
        return $fb_fs.$exp[0].$exp[1];
    }
    
}

if (!function_exists('strip_whitespace')) {
    /**
     * 去除代码中的空白和注释
     */
    function strip_whitespace($content)
    {
        $stripStr = '';
        // 分析php源码
        $tokens = token_get_all($content);
        $last_space = false;
        for ($i = 0, $j = count($tokens); $i < $j; $i ++) {
            if (is_string($tokens[$i])) {
                $last_space = false;
                $stripStr .= $tokens[$i];
            } else {
                switch ($tokens[$i][0]) {
                    // 过滤各种PHP注释
                    case T_COMMENT:
                    case T_DOC_COMMENT:
                        break;
                        // 过滤空格
                    case T_WHITESPACE:
                        if (! $last_space) {
                            $stripStr .= ' ';
                            $last_space = true;
                        }
                        break;
                    case T_START_HEREDOC:
                        $stripStr .= "<<<THINK\n";
                        break;
                    case T_END_HEREDOC:
                        $stripStr .= "THINK;\n";
                        for ($k = $i + 1; $k < $j; $k ++) {
                            if (is_string($tokens[$k]) && $tokens[$k] == ';') {
                                $i = $k;
                                break;
                            } else if ($tokens[$k][0] == T_CLOSE_TAG) {
                                break;
                            }
                        }
                        break;
                    default:
                        $last_space = false;
                        $stripStr .= $tokens[$i][1];
                }
            }
        }
        return $stripStr;
    }
}

if(!function_exists('money_convert')){
    /**
     * 资金单位元转万元
     * @param  [type] $value [description]
     * @return [type]        [description]
     * @author 张继立 <404851763@qq.com>
     */
    function money_convert($value=0, $unit='元'){
        $money = bcdiv($value, 100, 2);
        if($unit=='万' && $value > 100000){
            $money = bcdiv($value, 10000, 2);
        }
        return $money;
    }
}


if (!function_exists('get_adminconfig')) {
    /**
     * 得到后台配置
     * $name:名字
     */
    function get_adminconfig($name){
        $name=db('admin_config')->where('name',$name)->value('value');
        return (isset($name) && is_string($name))?$name:'';
    }
}

if (!function_exists('getFilterarr')) {
    /**
     * 得到表列的查询数组
     * @param $table:表名
     * @param $field:查询字段
     */
    function getFilterarr($table,$field){
        $result=array();
        $selarr=Db::name($table)->distinct($field)->column($field);
        if(is_array($selarr) && count($selarr)>0){
            for($i=0;$i<count($selarr);$i++){
                if(!empty($selarr[$i])){
                    $result[$selarr[$i]]=$selarr[$i];
                }
            }
        }
        return $result;
    }
}

if (!function_exists('http')) {
    /**
     * 得到协议类型
     */
    function http(){
        return empty($_SERVER['HTTP_X_CLIENT_PROTO']) ? 'http://' : $_SERVER['HTTP_X_CLIENT_PROTO'] . '://';
    }
}

if (!function_exists('getPinYin')) {
    /**
     * 得到拼音
     * @param unknown $zh
     * @return string|unknown
     */
    function getPinYin($zh){
        $ret = "";
        for($i = 0; $i < mb_strlen($zh); $i++){
            $onestr = mb_substr($zh,$i,1);
            preg_match('/\b[a-z]+\b/i',$onestr,$subject);
            if(!empty($subject)){
                $ret .= strtoupper($onestr);
                continue;
            }
            preg_match('/^[a-zA-Z\x{4e00}-\x{9fa5}]+$/u', $onestr,$subject2);
            if(!empty($subject2)){
                $ret .= getFirstChar($onestr);
                continue;
            }
        }
        return $ret;
    }
}

if (!function_exists('getFirstChar')) {
    /**
     * 获取汉子拼音首字母
     * @param unknown $s0
     * @return string|NULL
     */
    function getFirstChar($s0){
        $fchar = ord($s0{0});
        if($fchar >= ord("A") and $fchar <= ord("z") )return strtoupper($s0{0});
        
        $s1 = iconv("UTF-8","gbk", $s0);    //注GB2312范围小，会报错，所以推荐gbk
        $s2 = iconv("gbk","UTF-8", $s1);
        
        if($s2 == $s0){$s = $s1;}else{$s = $s0;}
        $asc = ord($s{0}) * 256 + ord($s{1}) - 65536;
        if($asc >= -20319 and $asc <= -20284) return "A";
        if($asc >= -20283 and $asc <= -19776) return "B";
        if($asc >= -19775 and $asc <= -19219) return "C";
        if($asc >= -19218 and $asc <= -18711) return "D";
        if($asc >= -18710 and $asc <= -18527) return "E";
        if($asc >= -18526 and $asc <= -18240) return "F";
        if($asc >= -18239 and $asc <= -17923) return "G";
        if($asc >= -17922 and $asc <= -17418) return "H";
        if($asc >= -17417 and $asc <= -16475) return "J";
        if($asc >= -16474 and $asc <= -16213) return "K";
        if($asc >= -16212 and $asc <= -15641) return "L";
        if($asc >= -15640 and $asc <= -15166) return "M";
        if($asc >= -15165 and $asc <= -14923) return "N";
        if($asc >= -14922 and $asc <= -14915) return "O";
        if($asc >= -14914 and $asc <= -14631) return "P";
        if($asc >= -14630 and $asc <= -14150) return "Q";
        if($asc >= -14149 and $asc <= -14091) return "R";
        if($asc >= -14090 and $asc <= -13319) return "S";
        if($asc >= -13318 and $asc <= -12839) return "T";
        if($asc >= -12838 and $asc <= -12557) return "W";
        if($asc >= -12556 and $asc <= -11848) return "X";
        if($asc >= -11847 and $asc <= -11056) return "Y";
        if($asc >= -11055 and $asc <= -10247) return "Z";
        
        return null;
    }
}

if (!function_exists('mytrim')) {
    /**
     * 去除字符串空格
     * @param unknown $str
     * @return mixed
     */
    function mytrim($str)
    {
        $search = array(" ","　","\n","\r","\t");
        $replace = array("","","","","");
        return str_replace($search, $replace, $str);
    }
}

if (!function_exists('php_submit')) {
    /**
     * PHP表单提交
     * @param $url:发送的跳转路径
     * @param $postdata:发送的参数(一维数组如:['name'=>'a','pwd'=>'b'])
     * @param $method:发送的请求方式POST|GET
     */
    function php_submit($url,$postdata,$method='POST'){
        $form='<form style="display:none;" action="'.$url.'" method="'.$method.'" id="myForm">';
        foreach ($postdata as $key=>$hang){
            $form.='<input type="text" name="'.$key.'" value="'.$hang.'">';
        }
        $form.='</form>';
        echo '<html><body onload="submit()">'.$form.'<script>function submit(){document.getElementById("myForm").submit()}</script></body></html>';
    }

}